<!DOCTYPE html>
<html lang="zh-hans">

<head>
    
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="HandheldFriendly" content="True" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta name="generator" content="Hugo 0.109.0">


<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dsrkafuu/dsr-cdn-main@1/images/favicons/dsrca.ico" />



<title>Q-Learning 强化学习 - OffSummer</title>


<meta name="author" content="RQY" />


<meta name="description" content="A minimal Hugo theme with nice theme color." />


<meta name="keywords" content="机器学习" />


<meta property="og:title" content="Q-Learning 强化学习" />
<meta name="twitter:title" content="Q-Learning 强化学习" />
<meta property="og:type" content="article" />
<meta property="og:url" content="/post/q-learning/" /><meta property="og:description" content="概述
Q-Learning是一种强化学习，又称为异策略时序差分控制。
异策略(off-policy)是指智能体的目标策略与行为策略不是同一个策略，即智能体能够通过离线学习策略，来指导自己的行为；同策略(on-policy)与此相反。
时序差分(Temporal Difference)是蒙特卡洛(Monte Carlo)方法与动态规划(Dynamic Programming, DP)的结合；时序差分能够在没有环境的动态模型的情况下从原始经验中直接进行学习；通过其他学习的估计值更新自身的估计值，而无需等待最终的结果。" />
<meta name="twitter:description" content="概述
Q-Learning是一种强化学习，又称为异策略时序差分控制。
异策略(off-policy)是指智能体的目标策略与行为策略不是同一个策略，即智能体能够通过离线学习策略，来指导自己的行为；同策略(on-policy)与此相反。
时序差分(Temporal Difference)是蒙特卡洛(Monte Carlo)方法与动态规划(Dynamic Programming, DP)的结合；时序差分能够在没有环境的动态模型的情况下从原始经验中直接进行学习；通过其他学习的估计值更新自身的估计值，而无需等待最终的结果。" /><meta property="og:image" content="/img/og.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="/img/og.png" />


<style>
    @media (prefers-color-scheme: dark) {
        body[data-theme='auto'] img {
            filter: brightness(60%);
        }
    }

    body[data-theme='dark'] img {
        filter: brightness(60%);
    }
</style>




<link rel="stylesheet" href="/assets/css/fuji.min.b4a21b5d3eb1d0a51297e31230a65fc25e387843e45ec3a2d9176cd8d163c216d99b9b13a618b28f537c3b559ec8a408183b0fbfad48daddb9befa7d3ef90eed.css" integrity="sha512-tKIbXT6x0KUSl&#43;MSMKZfwl44eEPkXsOi2Rds2NFjwhbZm5sTphiyj1N8O1WeyKQIGDsPv61I2t25vvp9PvkO7Q==" />








</head>

<body
  data-theme="auto"
  data-theme-auto='true'
  >
    <script data-cfasync="false">
  
  var fujiThemeData = localStorage.getItem('fuji_data-theme');
  
  if (!fujiThemeData) {
    localStorage.setItem('fuji_data-theme', 'auto');
  } else {
    
    if (fujiThemeData !== 'auto') {
      document.body.setAttribute('data-theme', fujiThemeData === 'dark' ? 'dark' : 'light');
    }
  }
</script>

    <header>
    <div class="container-lg clearfix">
        <div class="col-12 header">
            <a class="title-main" href="/">OffSummer</a>
            
            <span class="title-sub">Summer is going, but autumn does not come yet.</span>
            
        </div>
    </div>
</header>

    <main>
        <div class="container-lg clearfix">
            
            <div class="col-12 col-md-9 float-left content">
                
<article>
    
    <h2 class="post-item post-title">
        <a href="/post/q-learning/">Q-Learning 强化学习</a>
    </h2>
    <div class="post-item post-meta">
        <span><i class="iconfont icon-today-sharp"></i>&nbsp;0001-01-01</span>

<span><i class="iconfont icon-file-tray-sharp"></i>&nbsp;1723 字</span>
<span><i class="iconfont icon-time-sharp"></i>&nbsp;4 分钟</span>
<span><i class="iconfont icon-pricetags-sharp"></i>&nbsp;<a href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0">机器学习</a>&nbsp;</span>

    </div>
    
    <div class="post-content markdown-body">
        <h2 id="概述">概述</h2>
<p>Q-Learning是一种强化学习，又称为异策略时序差分控制。</p>
<p>异策略(off-policy)是指智能体的目标策略与行为策略不是同一个策略，即智能体能够通过离线学习策略，来指导自己的行为；同策略(on-policy)与此相反。</p>
<p>时序差分(Temporal Difference)是蒙特卡洛(Monte Carlo)方法与动态规划(Dynamic Programming, DP)的结合；时序差分能够在没有环境的动态模型的情况下从原始经验中直接进行学习；通过其他学习的估计值更新自身的估计值，而无需等待最终的结果。</p>
<h2 id="组成">组成</h2>
<h3 id="agent">agent</h3>
<p>智能体(agent)是Q-Learning中的。智能体会根据当前的状态(state)以及策略(policy)，执行一个的动作(action)；然后环境(environment)会根据智能体执行的动作，给予智能体奖励(reward)反馈，并改变自身的状态。智能体每次动作都能获得即时性的奖励，但Q-Learning的目的是获得最大化的长期累积收益。</p>
<h3 id="policy">policy</h3>
<p>强化学习中将策略分为了两类：目标策略(target policy)以及行为策略(behavior policy)。目标策略是智能体要学习的策略，行为策略是智能体与环境交互的策略，即用于生成行为的策略。</p>
<p>目标策略是贪心策略，也称为$\pi$策略；行为策略也称为$\mu$策略，；Q-Learning的目的是在Q-Table中，使目标的收益最大化，也可以选用随机的$\epsilon$贪心策略。</p>
<p>智能体的策略是使用马尔科夫决策过程(Markov Decision Process, MDP)进行建模，该过程可以使用五元元组$(S, A, P, r, \gamma)$表示。其中$S$表示状态空间；$A$表示动作空间；$P$表示状态转移函数，用$P:S\times A \to \Delta(S)$表示，其中$\Delta(S)$表示在$S$上的概率分布（转移概率）；$r$表示奖励函数，一些问题中是人为设置的确定性函数；$\gamma \epsilon [0,1]$，表示未来的奖励值的折损因子。该模型被称为马尔可夫决策过程，其状态转移概率只取决于当前状态$s$和当前执行的动作$a$，而与过去的状态和动作无关。当状态转移函数和奖励函数都是确定性时，我们称之为「确定性环境的MDP」。</p>
<h4 id="动态规划">动态规划</h4>
<p>动态规划可用于计算马尔可夫过程的最优策略，其采用全备份(full backup)，每次迭代基于后续所有可能状态的期望，而不只是后续的某一状态。</p>
<h4 id="蒙特卡洛方法">蒙特卡洛方法</h4>
<p>蒙特卡洛无需动态环境的知识，仅仅需要从实际或者模拟环境中获取状态、动作、奖励的经验样本。蒙特卡洛方法采用深采样，可以逐级(episode-by-episode)迭代，而非逐步在线(step-by-step, online)迭代。</p>
<h3 id="q-table">Q-Table</h3>
<p>Q-Learning使用Q-table记录状态、行为的Q值，其每步都会以下式更新Q-table，直到Q-table收敛。</p>
<p>$Q(S_t,A_t) \gets Q(S_t, A_t)+\alpha [R_{t+1}+\gamma\times(max{Q(S+1, a)-Q(S_t,A_t)})]$</p>
<h2 id="改进">改进</h2>
<p>Q-Learning采用Q-Table来记录Q值，但在高维连续空间中，计算量会呈现指数级增加，这也称为维度诅咒(curse of dimensionality)。</p>
<p>其改进有值函数近似、以及深度Q网络。</p>
<h3 id="值函数近似">值函数近似</h3>
<p>虽然我们无法使用一个表格进行存储Q值，但我们可以使用一些参数化的函数来近似替代Q表格，即值函数近似(Value Function Approximation)。有很多可供选择的近似函数，如线性模型、神经网络、决策树、最近邻算法等等。</p>
<h3 id="深度q网络">深度Q网络</h3>
<p>深度Q网络(Deep Q-Network)是深度学习与强化学习的结合体。深度Q网络利用更新的奖励值作为标签，通过梯度下降、损失函数反向传播的方式来更新神经网络的数据。</p>
<p>深度Q网络面临着几个挑战：需要大量的标签；强化学习从标量化的奖励(scalar reward)中进行学习，而奖励却通常是离散(sparse)、含噪(noisy)、延迟(delayed)的；深度学习假设样本独立同分布，而强化学习采样的数据是强相关的。因此，深度Q网络通过经验回放机制(Experience Replay)，将训练数据存储于回访缓存(Replay Buffer)中，以便于后续进行随机采样训练。</p>
<h2 id="参考资料">参考资料</h2>
<ol>
<li><a href="https://zhuanlan.zhihu.com/p/365814943" target="_blank">强化学习入门笔记——Q-learning从理论到实践 - 知乎 (zhihu.com)</a></li>
<li><a href="https://zhuanlan.zhihu.com/p/108286901" target="_blank">【强化学习】Deep Q-Network (DQN) - 知乎 (zhihu.com)</a></li>
</ol>
    </div>
</article>




            </div>
            <aside class="col-12 col-md-3 float-left sidebar">
    
    <div class="sidebar-item sidebar-pages">
        <h3>页面</h3>
        <ul>
            
            <li>
                <a href="/">Home</a>
            </li>
            
            <li>
                <a href="/archives/">Archives</a>
            </li>
            
            <li>
                <a href="/about/">About</a>
            </li>
            
            <li>
                <a href="/search/">Search</a>
            </li>
            
            <li>
                <a href="/index.xml">RSS</a>
            </li>
            
        </ul>
    </div>
    
    <div class="sidebar-item sidebar-links">
        <h3>链接</h3>
        <ul>
            
            <li>
                <a href="https://github.com/ruaqy" target="_blank"><span>GitHub</span></a>
            </li>
            
            <li>
                <a href="https://gitee.com/ruqy" target="_blank"><span>Gitee</span></a>
            </li>
            
            <li>
                <a href="https://space.bilibili.com/13382902" target="_blank"><span>Bilibili</span></a>
            </li>
            
        </ul>
    </div>
    
    <div class="sidebar-item sidebar-tags">
        <h3>标签</h3>
        <div>
            
            <span>
                <a href="/tags/dl/">DL</a>
            </span>
            
            <span>
                <a href="/tags/make-up/">Make Up</a>
            </span>
            
            <span>
                <a href="/tags/matlab/">MATLAB</a>
            </span>
            
            <span>
                <a href="/tags/mindspore/">mindspore</a>
            </span>
            
            <span>
                <a href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
            </span>
            
        </div>
    </div>
    <div class="sidebar-item sidebar-toc">
        <h3>目录</h3><nav id="TableOfContents">
  <ul>
    <li><a href="#概述">概述</a></li>
    <li><a href="#组成">组成</a>
      <ul>
        <li><a href="#agent">agent</a></li>
        <li><a href="#policy">policy</a></li>
        <li><a href="#q-table">Q-Table</a></li>
      </ul>
    </li>
    <li><a href="#改进">改进</a>
      <ul>
        <li><a href="#值函数近似">值函数近似</a></li>
        <li><a href="#深度q网络">深度Q网络</a></li>
      </ul>
    </li>
    <li><a href="#参考资料">参考资料</a></li>
  </ul>
</nav></div>
</aside>

        </div>
        <div class="btn">
    <div class="btn-menu" id="btn-menu">
        <i class="iconfont icon-grid-sharp"></i>
    </div>
    <div class="btn-toggle-mode">
        <i class="iconfont icon-contrast-sharp"></i>
    </div>
    <div class="btn-scroll-top">
        <i class="iconfont icon-chevron-up-circle-sharp"></i>
    </div>
</div>
<aside class="sidebar-mobile" style="display: none;">
  <div class="sidebar-wrapper">
    
    <div class="sidebar-item sidebar-pages">
        <h3>页面</h3>
        <ul>
            
            <li>
                <a href="/">Home</a>
            </li>
            
            <li>
                <a href="/archives/">Archives</a>
            </li>
            
            <li>
                <a href="/about/">About</a>
            </li>
            
            <li>
                <a href="/search/">Search</a>
            </li>
            
            <li>
                <a href="/index.xml">RSS</a>
            </li>
            
        </ul>
    </div>
    
    <div class="sidebar-item sidebar-links">
        <h3>链接</h3>
        <ul>
            
            <li>
                <a href="https://github.com/ruaqy" target="_blank"><span>GitHub</span></a>
            </li>
            
            <li>
                <a href="https://gitee.com/ruqy" target="_blank"><span>Gitee</span></a>
            </li>
            
            <li>
                <a href="https://space.bilibili.com/13382902" target="_blank"><span>Bilibili</span></a>
            </li>
            
        </ul>
    </div>
    
    <div class="sidebar-item sidebar-tags">
        <h3>标签</h3>
        <div>
            
            <span>
                <a href="/tags/dl/">DL</a>
            </span>
            
            <span>
                <a href="/tags/make-up/">Make Up</a>
            </span>
            
            <span>
                <a href="/tags/matlab/">MATLAB</a>
            </span>
            
            <span>
                <a href="/tags/mindspore/">mindspore</a>
            </span>
            
            <span>
                <a href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
            </span>
            
        </div>
    </div>
    
    
    
    <div class="sidebar-item sidebar-toc">
        <h3>目录</h3>
        <nav id="TableOfContents">
  <ul>
    <li><a href="#概述">概述</a></li>
    <li><a href="#组成">组成</a>
      <ul>
        <li><a href="#agent">agent</a></li>
        <li><a href="#policy">policy</a></li>
        <li><a href="#q-table">Q-Table</a></li>
      </ul>
    </li>
    <li><a href="#改进">改进</a>
      <ul>
        <li><a href="#值函数近似">值函数近似</a></li>
        <li><a href="#深度q网络">深度Q网络</a></li>
      </ul>
    </li>
    <li><a href="#参考资料">参考资料</a></li>
  </ul>
</nav>
    </div>
    
    
  </div>
</aside>
    </main>

    <footer>
    <div class="container-lg clearfix">
        <div class="col-12 footer">
            
            <p>
                除特殊注明部分，本站内容采用 <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 进行许可。
            </p>
            
            <span>&copy; 2023-2023
                <a href="/">RQY</a>
                 | <a href="https://github.com/dsrkafuu/hugo-theme-fuji">Source code</a> 
                | 基于 <a href="https://github.com/dsrkafuu/hugo-theme-fuji/"
                   target="_blank">Fuji-v2</a> &amp; <a href="https://gohugo.io/"
                                                    target="_blank">Hugo</a> 构建
            </span>
        </div>
    </div>
</footer>

    
<script defer src="https://cdn.jsdelivr.net/npm/medium-zoom@1.0.6/dist/medium-zoom.min.js" integrity="sha512-N9IJRoc3LaP3NDoiGkcPa4gG94kapGpaA5Zq9/Dr04uf5TbLFU5q0o8AbRhLKUUlp8QFS2u7S+Yti0U7QtuZvQ==" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/lazysizes@5.3.2/lazysizes.min.js" integrity="sha512-q583ppKrCRc7N5O0n2nzUiJ+suUv7Et1JGels4bXOaMFQcamPk9HjdUknZuuFjBNs7tsMuadge5k9RzdmO+1GQ==" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/prismjs@1.27.0/components/prism-core.min.js" integrity="sha512-LCKPTo0gtJ74zCNMbWw04ltmujpzSR4oW+fgN+Y1YclhM5ZrHCZQAJE4quEodcI/G122sRhSGU2BsSRUZ2Gu3w==" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/prismjs@1.27.0/plugins/autoloader/prism-autoloader.min.js" integrity="sha512-GP4x8UWxWyh4BMbyJGOGneiTbkrWEF5izsVJByzVLodP8CuJH/n936+yQDMJJrOPUHLgyPbLiGw2rXmdvGdXHA==" crossorigin="anonymous"></script>



<script defer src="/assets/js/fuji.min.645f1123be695831f419ab54c1bcba327325895c740014006e57070d4f3e5d6b553e929c4b46f40ea707249e9c7f7c2a446d32a39ce7319f80a34525586a8e0f.js" integrity="sha512-ZF8RI75pWDH0GatUwby6MnMliVx0ABQAblcHDU8&#43;XWtVPpKcS0b0DqcHJJ6cf3wqRG0yo5znMZ&#43;Ao0UlWGqODw=="></script>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.3/dist/katex.min.css" integrity="sha512-07YhC3P4/vS5HdgGuNAAeIxb5ee//efgRNo5AGdMtqFBUPYOdQG/sDK0Nl5qNq94kdEk/Pvu8pmN4GYUeucUkw==" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/katex@0.15.3/dist/katex.min.js" integrity="sha512-aMDiFsrEV3KzAn9EHwyBRS7y1APjZWt/Z/73ukLN2Ca2KcGGzlOQFQSnfOdnEcehpwMaQ8edlDB/0cMX2GsHbg==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.15.3/dist/contrib/auto-render.min.js" integrity="sha512-ZA/RPrAo88DlwRnnoNVqKINnQNcWERzRK03PDaA4GIJiVZvGFIWQbdWCsUebMZfkWohnfngsDjXzU6PokO4jGw==" crossorigin="anonymous"></script>
<script>
  renderMathInElement(document.querySelector('div.content'), {
    delimiters: [
      { left: '$$', right: '$$', display: true },
      { left: '\\[', right: '\\]', display: true },
      { left: '$', right: '$', display: false },
      { left: '\\(', right: '\\)', display: false },
    ],
  });
</script>




</body>

</html>
